package scala

object Demo15Fun4 {
  def main(args: Array[String]): Unit = {

    /**
      * 以函数作为参数的应用
      *
      */

    val array = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)

    //将数组中的元素都乘以2
    var i = 0
    while (i < array.length) {

      array(i) = array(i) * 2

      i += 1
    }

    //mkString 将数组或者集合按照一个分隔符拼接成一个字符串
    println(array.mkString("\t"))

    println("=" * 100)


    //使用后scala  高阶函数实现
    val array1 = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)

    /**
      * map函数： 一个一个处理数组中的元素
      *
      * 循环数组中的元素，一个一个传给后面的函数，最终返回一个新的数组
      *
      */

    //将数组中的元素都乘以2
    val array3: Array[Int] = array1.map((i: Int) => i * 2)

    println(array3.mkString(","))


    val strs = Array("1.1", "2.3", "1.4", "1.2")

    //将数组中元素的类型转换成Double 类型

    val doubles: Array[Double] = strs.map((s: String) => s.toDouble)

    println(doubles.mkString(","))


    /**
      * 将数组中的元素奇数乘以2，偶数加一
      *
      */

    val array4 = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)

    val array5: Array[Int] = array4.map((i: Int) => {
      if (i % 2 == 1) {
        i * 2
      } else {
        i + 1
      }
    })

    println(array5.mkString(","))

    /**
      * 练习
      * 1、对数组中的元素乘以2  加上100 乘以5
      *
      */

  }

}
